#ifndef RESOURCE_STORE_H
#define RESOURCE_STORE_H

#include <unordered_map>
#include <SDL3/SDL.h>
#include <SDL3_image/SDL_image.h>
#include <SDL3_ttf/SDL_ttf.h>
#include <SDL3_mixer/SDL_mixer.h>
#include <string>
class ResourceStore
{
private:
    SDL_Renderer *renderer_;                                     // 渲染器
    std::unordered_map<std::string, SDL_Texture *> texture_map_; // 纹理资源
    std::unordered_map<std::string, Mix_Chunk *> sound_map_;     // 音效资源
    std::unordered_map<std::string, TTF_Font *> font_map_;       // 字体资源
    std::unordered_map<std::string, Mix_Music *> music_map_;     // 音乐资源
public:
    ResourceStore(SDL_Renderer *renderer) { renderer_ = renderer; }; // 构造函数

    SDL_Texture *getTexture(const std::string &path);     // 获取纹理资源
    Mix_Chunk *getSound(const std::string &path);         // 获取音效资源
    TTF_Font *getFont(const std::string &path, int size); // 获取字体资源
    Mix_Music *getMusic(const std::string &path);         // 获取音乐资源

    void loadTexture(const std::string &path);        // 加载纹理资源
    void loadSound(const std::string &path);          // 加载音效资源
    void loadFont(const std::string &path, int size); // 加载字体资源
    void loadMusic(const std::string &path);          // 加载音乐资源
    void clear();                                     // 清除资源
};

#endif // RESOURCE_STORE_H